package com.benito.entities;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;

import org.apache.log4j.Logger;


public class ConsultasBBDD {

	Statement s;
	
	private static final Logger logger = Logger.getLogger(ConsultasBBDD.class);
	
	
	public ConsultasBBDD(Statement s){
		this.s = s;
	}
	
	public int insertarCuadro(Cuadro cuadro) throws IOException{
		int res=0;				
		Utils utils = new Utils();
		try{					
			String query = 
            " INSERT INTO cuadros (id, titulo, id_grupo, id_subgrupo, medidas, anyo, tecnica, lugar, activo)" +
            " VALUES('"+cuadro.getNombreFoto()+"', '"+cuadro.getTitulo()+"', '"+cuadro.getGrupo()+"', '"+ cuadro.getSubGrupo()+"', '"+ cuadro.getMedidas()+"', '"+cuadro.getAnyo()+"', '"+ cuadro.getTecnica()+"', '"+cuadro.getLugar()+"', '"+cuadro.getActivo()+"')";
            			
			//logger.info(cuadro);
        	logger.info(query);        	    	
        	//logger.info("");
        	
        	
        	//Impresion en el fichero script el insert
        	FileWriter fichero = null;
            PrintWriter pw = null;
            try
            {
                fichero = new FileWriter("cuadros nuevos/cuadros.sql", true);
                pw = new PrintWriter(fichero);                
                pw.println(query.trim()+";");
                pw.println("COMMIT;");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
               try {
            	   if (null != fichero){
            		   fichero.close();
            	   }
               } catch (Exception e2) {
            	   e2.printStackTrace();
               }
            }
        	
            
            //Actualizamos la tabla
			res = s.executeUpdate(query);
		}catch(Exception e){			
			logger.error(e.getMessage());
			logger.error(e);
			e.printStackTrace();
			utils.stop();
		}
		return res;
	}	
	
	public int deleteAllCuadros() throws IOException{
		int res=0;
		Utils utils = new Utils();
		String query = "DELETE FROM cuadros";
		try{
			res = s.executeUpdate(query);
		}catch(com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException e){
			logger.error(e.getMessage());
			logger.error(e);
			e.printStackTrace();
			utils.stop();
		}catch(Exception e){		
			logger.error(e.getMessage());
			logger.error(e);
			e.printStackTrace();
			utils.stop();
		}
		return res;
	}
	
	
	public HashMap<String, String> getHashGrupos() throws IOException{
					
		HashMap<String, String> grupos = new HashMap<String, String>();
		Utils utils = new Utils();
		try{					
			String query = 
            " SELECT * FROM grupos";
			
			ResultSet rs = s.executeQuery (query);
			
			while (rs.next()){
			    String id = rs.getString("id");
			    String descripcion = rs.getString("descripcion");			    
			    
			    logger.info("ID: "+id+" - Descripcion: "+descripcion);
			    
			    descripcion = utils.quitarAcentos(descripcion);			    
			    descripcion = descripcion.toLowerCase();
			    
			    grupos.put(descripcion, id);
			}
        	
		}catch(Exception e){			
			logger.error(e.getMessage());
			logger.error(e);
			e.printStackTrace();
			utils.stop();
		}
		return grupos;		
	}
	
	public HashMap<String, String> getHashSubGrupos() throws IOException{
		
		HashMap<String, String> subGrupos = new HashMap<String, String>();
		Utils utils = new Utils();
		try{					
			String query = 
            " SELECT * FROM subgrupos";
			
			ResultSet rs = s.executeQuery (query);
			
			while (rs.next()){
			    String id = rs.getString("id");
			    String descripcion = rs.getString("descripcion");
			    
			    logger.info("ID: "+id+" - Descripcion: "+descripcion);
			    
			    descripcion = utils.quitarAcentos(descripcion);			    
			    descripcion = descripcion.toLowerCase();
			    
			    
			    subGrupos.put(descripcion, id);
			}
        	
		}catch(Exception e){			
			logger.error(e.getMessage());
			logger.error(e);
			e.printStackTrace();
			utils.stop();
		}
		return subGrupos;		
	}
		
}
